<?php
class OrdemservicosController extends AppController {

	var $name = 'Ordemservicos';

	function cadastrarOs($id = null, $msg = null) {
		$novaOS = false;
		if ( !empty($this->data['Ordemservico']) ) {
			//echo '<pre>'; print_r($this->data); echo '</pre>';
			if ( empty($this->data['Ordemservico']['id']) ) 		
				$novaOS = true;
			if ( empty($this->data['Ordemservico']['tipo']) ) 		
				$this->data['Ordemservico']['tipo'] = 'G';
				
			if ($this->Ordemservico->save($this->data)) {
				if ( $novaOS == true ) {
					$this->data['OrdemservicosStatus']['funcionario'] = $this->Session->read('nome');
					$this->data['OrdemservicosStatus']['descricao'] = 'OS aberta';
					$this->data['OrdemservicosStatus']['ordemservico_id'] = $this->Ordemservico->id;
					$this->data['OrdemservicosStatus']['status_id'] = 1;
					$this->Ordemservico->OrdemservicosStatus->create();
					$this->Ordemservico->OrdemservicosStatus->save($this->data['OrdemservicosStatus']);
				}
				$this->data['Ordemservico']['id'] = $this->Ordemservico->inserirZerosId($this->Ordemservico->id);
				( $novaOS == true ) ? $msg = 'Ordem de Serviço gerada com sucesso.' : $msg = 'Dados alterados com sucesso!';
				$this->redirect(array('action' => 'cadastrarOs', $this->Ordemservico->id, $msg));
			} else 
				( $novaOS == true ) ? $msg = 'Ordem de Serviço não foi gerada.' : $msg = 'Ordem de Serviço não foi alterada.';
		}
		
		$municipios = array();
		if ($id && empty($this->data)) {
			$this->data = $this->Ordemservico->read(null, $id);
			$municipios = $this->Ordemservico->Pessoa->Municipio->find('list', array('conditions' => array('Municipio.id' => $this->data['Pessoa']['municipio_id'])));
			$this->data['Ordemservico']['id'] = $this->Ordemservico->inserirZerosId($this->data['Ordemservico']['id']);
		}
		$produtos = $this->Ordemservico->Produto->find('list', array('conditions' => array('Produto.ativo' => true)));
		$pessoas = $this->Ordemservico->Pessoa->find('list');
		$this->set(compact('produtos', 'pessoas', 'id', 'municipios', 'msg'));
	}
	
	function consultar($msg = null) {
		
		if ( !empty($this->data) ) {
			$os_id = ''; 
			if ( $this->data['Ordemservico']['numero_os'] ) {
				$os_id = $this->Ordemservico->field('id', array('Ordemservico.id' => $this->data['Ordemservico']['numero_os'])); 
				if( !empty($os_id) )
					$this->redirect(array('action' => 'infoOs', $os_id, $msg));
				else 
					$msg = 'OS não existe. Favor tentar novamente.';
			}
		}
		$this->set(compact('msg'));
	}
	
	function editarOs($msg = null) {
		
		if ( !empty($this->data) ) {
			$os_id = '';  
			if ( $this->data['Ordemservico']['numero_os'] ) {
				$os_id = $this->Ordemservico->field('id', array('Ordemservico.id' => $this->data['Ordemservico']['numero_os'])); 
				if( !empty($os_id) )
					$this->redirect(array('action' => 'cadastrarOs', $os_id));
				else 
					$msg = 'OS não existe. Favor tentar novamente.';
			}
		}
		$this->set(compact('msg'));
	}

	
	
	function excluirOs($msg = null) {
		
		if ( !empty($this->data) ) {
			$os_id = '';  
			if ( $this->data['Ordemservico']['numero_os'] ) {
				$os_id = $this->Ordemservico->field('id', array('Ordemservico.id' => $this->data['Ordemservico']['numero_os'])); 
				if( !empty($os_id) )
					$this->redirect(array('action' => 'cadastrarOs', $os_id));
				else 
					$msg = 'OS não existe. Favor tentar novamente.';
			}
		$this->set(compact('msg'));
		}
	}

	function delete($id = null, $msg = null) {
		if ($id) {
			if ( $this->Session->read('Auth.Usuario.perfilacesso') == 'Administrador' ) {
				if ($this->Ordemservico->delete($id)) {
					$msg = 'Dados apagados com sucesso!';
					$this->redirect(array('action'=>'consultar'));
				} else 
					$msg = 'OS não foi excluída.';
			} else 
				$msg = 'Somente o Administrador pode excluir uma OS.';
		}
		$this->redirect(array('action' => 'cadastrarOs', $id, $msg));
	}
	
	function infoOs($os_id = null, $msg = null) {
		$this->set('posicao_aba', 0);
		$municipios = array();
		if ($os_id) {
			$this->Ordemservico->unbindModel(array('hasAndBelongsToMany' => array('Peca', 'Status', 'Servico'), 'hasMany' => array('Laudotecnico', 'Pagamento', 'Entrega')));
			$this->data = $this->Ordemservico->read(null, $os_id);
			$municipios = $this->Ordemservico->Pessoa->Municipio->find('list', array('conditions' => array('Municipio.id' => $this->data['Pessoa']['municipio_id']))); 
		}
		$this->set(compact('municipios', 'os_id', 'msg'));
	}
	
	function consultarOs($msg = null) {
		
		if ( !empty($this->data) ) {
			$os_id = null; 
			if ( $this->data['Ordemservico']['numero_os'] ) {
				$os_id = $this->Ordemservico->field('id', array('Ordemservico.id' => $this->data['Ordemservico']['numero_os'])); 
				if(!empty($os_id))
					$this->redirect(array('action' => 'cadastrarInfoos', $os_id));
				else 
					$msg = 'OS não existe. Favor tentar novamente.';
			}
		}
		$this->set(compact('os_id', 'msg'));
	}

	function cadastrarInfoos($id = null, $msg = null) {
		
		if (!empty($this->data)) {
		
			if (!empty($this->data['OrdemservicosStatus']['status_id'])) {
				
				$this->data['OrdemservicosStatus']['funcionario'] = $this->Session->read('nome');
				$this->data['OrdemservicosStatus']['ordemservico_id'] = $this->data['Ordemservico']['id'];
				$this->Ordemservico->OrdemservicosStatus->create();
				if ($this->Ordemservico->OrdemservicosStatus->save($this->data['OrdemservicosStatus'])) {
				
					if (!empty($this->data['OrdemservicosPeca']['peca_id'])) {
						$this->data['OrdemservicosPeca']['ordemservico_id'] = $this->data['Ordemservico']['id'];
						$this->Ordemservico->OrdemservicosPeca->create();
						$this->Ordemservico->OrdemservicosPeca->save($this->data['OrdemservicosPeca']); 
					}
					if (!empty($this->data['OrdemservicosServico']['servico_id'])) {
						$this->data['OrdemservicosServico']['ordemservico_id'] = $this->data['Ordemservico']['id'];
						$this->Ordemservico->OrdemservicosServico->create();
						$this->Ordemservico->OrdemservicosServico->save($this->data['OrdemservicosServico']); 
					}
					
					$msg = 'OS atualizada com sucesso.';
					$this->redirect(array('action' => 'cadastrarInfoos', $this->data['Ordemservico']['id'], $msg));
					
				} else 
					$msg = 'Problemas ao atualizar OS. Por favor, tente novamente.';
				
			} else 
				$msg = 'Favor selecionar um Status e preencher a descrição.';
			
		}
		if (empty($this->data)) {
			$this->data = $this->Ordemservico->read(null, $id);
		}
		//$pecas = $this->Ordemservico->Peca->find('list');
		//$ordemservicos = $this->Ordemservico->find('list');
		//$servicos = $this->Ordemservico->Servico->find('list');
		$status = $this->Ordemservico->Status->find('list');
		$this->set(compact(/*'pecas', 'ordemservicos', 'servicos', */'status', 'id', 'msg'));
	}
	
	function consultarNota(){
		
		$pagto_id = ''; 
		if ( $this->data['Ordemservico']['numero_os'] ) {
			$pagto_id = $this->Ordemservico->field('id', array('Pagamento.ordemservico_id' => $this->data['Ordemservico']['numero_os'])); 
			if(!empty($pagto_id)) {
				//$this->redirect(array('action' => 'emitirNota', $pagto_id));
				$this->set('pagamento', $this->Ordemservico->read(null, $pagto_id));
			//$this->layout = 'pdf';
			//	$this->render('notaPdf');
			}
			/*else {
				$this->Session->setFlash(sprintf(__('OS não existe. Favor tentar novamente.', true), 'Ordemservico'));
				$this->redirect(array('action' => 'consultar', 'nulo', $os_id));
			}*/
		}
		if ( $this->data['Ordemservico']['numero_nota'] ) {
			$pagto_id = $this->Ordemservico->field('id', array('Pagamento.id' => $this->data['Ordemservico']['numero_nota'])); 
			if(!empty($pagto_id)) {
				//$this->redirect(array('action' => 'emitirNota', $pagto_id));
				$this->set('pagamento', $this->Ordemservico->read(null, $pagto_id));
				//$this->layout = 'pdf';
				//$this->render('notaPdf');
			}
			/*else {
				$this->Session->setFlash(sprintf(__('OS não existe. Favor tentar novamente.', true), 'Ordemservico'));
				$this->redirect(array('action' => 'consultar', 'nulo', $os_id));
			}*/
		}			
		
		$this->set(compact('id'));
		
	}
	
	function relatorioAtendimento($msg = null) {
		
		if ( $this->Session->read('Auth.Usuario.perfilacesso') == 'Administrador' ) {
			$periodo = $tipo = '';
			if ( !empty($this->data['Ordemservico']['datainicial']) && !empty($this->data['Ordemservico']['datafinal']) ) {
				$data1 = explode('/', $this->data['Ordemservico']['datainicial']);
				$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
				$data2 = explode('/', $this->data['Ordemservico']['datafinal']);
				$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
				$periodo = "created between '".$datainicial."' and '".$datafinal."'";
			}
			if ( !empty($this->data['Ordemservico']['garantia']) && empty($this->data['Ordemservico']['orcamento']) ) 
				$tipo = "tipo = 'G'";
			if ( !empty($this->data['Ordemservico']['orcamento']) && empty($this->data['Ordemservico']['garantia']) )  
				$tipo = "tipo = 'O'";
			
			if ( !empty($periodo) && !empty($tipo) ) 
				$condicao = "where ".$tipo." and ".$periodo."";
			elseif ( !empty($periodo) && empty($tipo) )
				$condicao = "where ".$periodo;
			elseif ( empty($periodo) && !empty($tipo) )
				$condicao = "where ".$tipo;
			else
				$condicao = '';
			
			$OSs = $this->Ordemservico->contarOSPorDiaTipo($condicao);
			foreach ($OSs as $ordemservico) {
				($ordemservico[0]['tipo'] == 'G') ? $os['tipo'] = 'Garantia' : $os['tipo'] = 'Orçamento';
				$data = explode('-', $ordemservico[0]['dt']);
				$os['data'] = $data[2].'/'.$data[1].'/'.$data[0];
				$os['quantidade'] = $ordemservico[0]['count'];
				$ordemservicos[] = $os;
			}
			$this->set(compact('ordemservicos', 'msg', 'dados'));
			
		} else {
			$this->Session->write('msg', 'Você não tem acesso a essa funcionalidade.');
			$this->redirect('/menu/');
		}

	}
	
	function relatorioAtendimentoPdf() {
		
		$periodo = $tipo = '';
		if ( !empty($this->data['Ordemservico']['datainicial']) && !empty($this->data['Ordemservico']['datafinal']) ) {
			$data1 = explode('/', $this->data['Ordemservico']['datainicial']);
			$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
			$data2 = explode('/', $this->data['Ordemservico']['datafinal']);
			$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
			$periodo = "created between '".$datainicial."' and '".$datafinal."'";
		}
		if ( !empty($this->data['Ordemservico']['garantia']) && empty($this->data['Ordemservico']['orcamento']) ) 
			$tipo = "tipo = 'G'";
		if ( !empty($this->data['Ordemservico']['orcamento']) && empty($this->data['Ordemservico']['garantia']) )  
			$tipo = "tipo = 'O'";
		
		if ( !empty($periodo) && !empty($tipo) ) 
			$condicao = "where ".$tipo." and ".$periodo."";
		elseif ( !empty($periodo) && empty($tipo) )
			$condicao = "where ".$periodo;
		elseif ( empty($periodo) && !empty($tipo) )
			$condicao = "where ".$tipo;
		else
			$condicao = '';
		
		$OSs = $this->Ordemservico->contarOSPorDiaTipo($condicao);
		foreach ($OSs as $ordemservico) {
			($ordemservico[0]['tipo'] == 'G') ? $os['tipo'] = 'Garantia' : $os['tipo'] = 'Orçamento';
			$data = explode('-', $ordemservico[0]['dt']);
			$os['data'] = $data[2].'/'.$data[1].'/'.$data[0];
			$os['quantidade'] = $ordemservico[0]['count'];
			$ordemservicos[] = $os;
		}
		
		$this->set(compact('ordemservicos'));
		$this->layout = 'pdf';
				
	}

	function relatorioProducao($msg = null) {
		
		if ( $this->Session->read('Auth.Usuario.perfilacesso') == 'Administrador' ) {
			$periodo = $funcionario = '';
			if ( !empty($this->data['Ordemservico']['datainicial']) && !empty($this->data['Ordemservico']['datafinal']) ) {
				$data1 = explode('/', $this->data['Ordemservico']['datainicial']);
				$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
				$data2 = explode('/', $this->data['Ordemservico']['datafinal']);
				$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
				$periodo = "created between '".$datainicial."' and '".$datafinal."'";
			}
			$tipo = array(0 => '', 1 => '', 2 => '');
			if ( $this->data['Ordemservico']['tecnico'] == 1 ) 
				$tipo[0] = 'Técnico';
			if ( $this->data['Ordemservico']['atendente'] == 1 )  
				$tipo[1] = 'Atendente';
			if ( $this->data['Ordemservico']['entregador'] == 1 )  
				$tipo[2] = 'Entrega';
			
			if ( $this->data['Ordemservico']['todos'] == 0) {
				$nome = array();
				if ( !empty($this->data['Ordemservico']['funcionarios']) && array_key_exists(0, $this->data['Ordemservico']['funcionarios']) ) {
					foreach ($this->data['Ordemservico']['funcionarios'] as $funcionario) {
						$nome[] = $this->Ordemservico->Pessoa->field('nome', array('Pessoa.id' => $funcionario));
					}
				}
				if ( count($nome) > 1 ) {
					for ($i=0; $i < count($nome); $i++) {
						if ( $i == 0 )
							$funcionario = "funcionario ilike '%".$nome[$i]."%' OR ";
						else 
							$funcionario .= "funcionario ilike '%".$nome[$i]."%'";
					}
				} elseif ( count($nome) == 1 )
					$funcionario = "funcionario ilike '%".$nome[0]."%'";
			}
			
			if ( !empty($periodo) && !empty($funcionario) ) 
				$condicao = "where ".$funcionario." and ".$periodo."";
			elseif ( !empty($periodo) && empty($funcionario) )
				$condicao = "where ".$periodo;
			elseif ( empty($periodo) && !empty($funcionario) )
				$condicao = "where ".$funcionario;
			else
				$condicao = '';
				
			$OSs = $this->Ordemservico->contarOSPorDiaFuncionario($condicao);
			foreach ($OSs as $ordemservico) {
				$data = explode('-', $ordemservico[0]['dt']);
				$os['data'] = $data[2].'/'.$data[1].'/'.$data[0];
				$os['quantidade'] = $ordemservico[0]['count'];
				$os['funcionario'] = $ordemservico[0]['funcionario'];
				$pessoa_id = $this->Ordemservico->Pessoa->field('id', array("Pessoa.nome ilike '%".$os['funcionario']."%'"));
				$modulo = $this->Ordemservico->Pessoa->Usuario->field('perfilacesso', array('Usuario.pessoa_id' => $pessoa_id));
				
				if ( !empty($tipo[0]) || !empty($tipo[1]) || !empty($tipo[2]) ){ 
					if ( !empty($tipo[0]) && ($tipo[0] == $modulo) )
						$os['modulo'] = $modulo;
					elseif ( !empty($tipo[1]) && ($tipo[1] == $modulo) )
						$os['modulo'] = $modulo;
					elseif ( !empty($tipo[2]) && ($tipo[2] == $modulo) )
						$os['modulo'] = $modulo;
					else 
						unset($os);
				} else 
					$os['modulo'] = $modulo;
				
				if (isset($os))
					$ordemservicos[] = $os;
			}
			
			(empty($this->data)) ? $inicio = true : $inicio = false;
			( $inicio == true || $this->data['Ordemservico']['todos'] == 1 ) ? $checked = 'checked' : $checked = '';
			
			$pessoas = $this->Ordemservico->Pessoa->find('list', array('conditions' => array('Pessoa.pessoatipo' => 'Funcionario')));
			$this->set(compact('ordemservicos', 'pessoas', 'checked', 'msg'));
			
		} else {
			$this->Session->write('msg', 'Você não tem acesso a essa funcionalidade.');
			$this->redirect('/menu/');
		}
		
	}
	
	function relatorioProducaoPdf() {
		
		$periodo = $funcionario = '';
		if ( !empty($this->data['Ordemservico']['datainicial']) && !empty($this->data['Ordemservico']['datafinal']) ) {
			$data1 = explode('/', $this->data['Ordemservico']['datainicial']);
			$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
			$data2 = explode('/', $this->data['Ordemservico']['datafinal']);
			$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
			$periodo = "created between '".$datainicial."' and '".$datafinal."'";
		}
		$tipo = array(0 => '', 1 => '', 2 => '');
		if ( $this->data['Ordemservico']['tecnico'] == 1 ) 
			$tipo[0] = 'Técnico';
		if ( $this->data['Ordemservico']['atendente'] == 1 )  
			$tipo[1] = 'Atendente';
		if ( $this->data['Ordemservico']['entregador'] == 1 )  
			$tipo[2] = 'Entrega';
		
		if ( $this->data['Ordemservico']['todos'] == 0) {
			$nome = array();
			if ( !empty($this->data['Ordemservico']['funcionarios']) && array_key_exists(0, $this->data['Ordemservico']['funcionarios']) ) {
				foreach ($this->data['Ordemservico']['funcionarios'] as $funcionario) {
					$nome[] = $this->Ordemservico->Pessoa->field('nome', array('Pessoa.id' => $funcionario));
				}
			}
			if ( count($nome) > 1 ) {
				for ($i=0; $i < count($nome); $i++) {
					if ( $i == 0 )
						$funcionario = "funcionario ilike '%".$nome[$i]."%' OR ";
					else 
						$funcionario .= "funcionario ilike '%".$nome[$i]."%'";
				}
			} elseif ( count($nome) == 1 )
				$funcionario = "funcionario ilike '%".$nome[0]."%'";
		}
		
		if ( !empty($periodo) && !empty($funcionario) ) 
			$condicao = "where ".$funcionario." and ".$periodo."";
		elseif ( !empty($periodo) && empty($funcionario) )
			$condicao = "where ".$periodo;
		elseif ( empty($periodo) && !empty($funcionario) )
			$condicao = "where ".$funcionario;
		else
			$condicao = '';
			
		$OSs = $this->Ordemservico->contarOSPorDiaFuncionario($condicao);
		foreach ($OSs as $ordemservico) {
			$data = explode('-', $ordemservico[0]['dt']);
			$os['data'] = $data[2].'/'.$data[1].'/'.$data[0];
			$os['quantidade'] = $ordemservico[0]['count'];
			$os['funcionario'] = $ordemservico[0]['funcionario'];
			$pessoa_id = $this->Ordemservico->Pessoa->field('id', array("Pessoa.nome ilike '%".$os['funcionario']."%'"));
			$modulo = $this->Ordemservico->Pessoa->Usuario->field('perfilacesso', array('Usuario.pessoa_id' => $pessoa_id));
			
			if ( !empty($tipo[0]) || !empty($tipo[1]) || !empty($tipo[2]) ){ 
				if ( !empty($tipo[0]) && ($tipo[0] == $modulo) )
					$os['modulo'] = $modulo;
				elseif ( !empty($tipo[1]) && ($tipo[1] == $modulo) )
					$os['modulo'] = $modulo;
				elseif ( !empty($tipo[2]) && ($tipo[2] == $modulo) )
					$os['modulo'] = $modulo;
				else 
					unset($os);
			} else 
				$os['modulo'] = $modulo;
			
			if (isset($os))
				$ordemservicos[] = $os;
		}
		
		$this->set(compact('ordemservicos'));
			
		$this->layout = 'pdf';
		
	}
	
	function relatorioAcompanhamento($msg = null) {
		
		if ( $this->Session->read('Auth.Usuario.perfilacesso') == 'Administrador' ) {
			$periodo = $tipo = $os_id = $status = '';
			if ( !empty($this->data['Ordemservico']['ordemservico_id']) )  
				$os_id = '"Ordemservico"."id" = '.$this->data['Ordemservico']['ordemservico_id'].'';
			if ( !empty($this->data['Ordemservico']['datainicial']) && !empty($this->data['Ordemservico']['datafinal']) ) {
				$data1 = explode('/', $this->data['Ordemservico']['datainicial']);
				$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
				$data2 = explode('/', $this->data['Ordemservico']['datafinal']);
				$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
				$periodo = "to_date(\"Ordemservico\".\"entregadata\", 'DD/MM/YYYY') between '".$datainicial."' and '".$datafinal."'";
			}
			if ( !empty($this->data['Ordemservico']['garantia']) && empty($this->data['Ordemservico']['orcamento']) ) 
				$tipo = '"Ordemservico"."tipo" = \'G\'';
			if ( !empty($this->data['Ordemservico']['orcamento']) && empty($this->data['Ordemservico']['garantia']) )  
				$tipo = '"Ordemservico"."tipo" = \'O\'';
			
			if( !empty($this->data['Ordemservico']['status']) ) 
				$status = $this->data['Ordemservico']['status'];
			
			$this->Ordemservico->recursive = -1;
			//conditions será somente as OSs abertas
			$this->paginate = array('conditions' => array(/*'OrdemservicosStatus.status_id' => 13, */$tipo, $periodo, $os_id),
								  	'order' => array("to_date(\"Ordemservico\".\"entregadata\", 'DD/MM/YYYY')" => 'ASC')
								  );
			
		  	$ordemservicos = array();
			$OSs = $this->paginate();
			foreach ($OSs as $OS) {
				list($dia, $mes, $ano) = explode('/', date('d/m/Y', strtotime($OS['Ordemservico']['created'])));
				list($hora, $minuto, $segundo) = explode(':', date('H:i:s', strtotime($OS['Ordemservico']['created'])));
				$dataEntrada = mktime($hora, $minuto, $segundo, $mes, $dia, $ano);
				
				list($dia1, $mes1, $ano1) = explode('/', $OS['Ordemservico']['entregadata']);
				$dataEntrega = mktime(23, 59, 59, $mes1, $dia1, $ano1);
				
				list($dia2, $mes2, $ano2) = explode('/', date('d/m/Y'));
				list($hora2, $minuto2, $segundo2) = explode(':', date('H:i:s'));
				$tempoAtual = mktime($hora2, $minuto2, $segundo2, $mes2, $dia2, $ano2);
				
				$prazoTotal = $dataEntrega - $dataEntrada;
				$prazoRestante = $dataEntrega - $tempoAtual;
				
				if ( $prazoTotal < 0 )
					$prazoTotal = 1;
				$porcentagem = ($prazoRestante / $prazoTotal) * 100;
				if ($porcentagem > 15)
					$cor = 'green';
				elseif ($porcentagem < 15 && $porcentagem > 0)
					$cor = 'yellow';
				else
					$cor = 'red';
				
				if ( !empty($status) ) {
					if ( $status == $cor )
						$OS['cor'] = $cor;
					else
						unset($OS);
				} else
					$OS['cor'] = $cor;
				
				if (isset($OS)) {
					$OS['Ordemservico']['id'] = $this->Ordemservico->inserirZerosId($OS['Ordemservico']['id']);
					$ordemservicos[] = $OS;
				}
			}

			$this->set(compact('ordemservicos', 'msg', 'dados'));
			
		} else {
			$this->Session->write('msg', 'Você não tem acesso a essa funcionalidade.');
			$this->redirect('/menu/');
		}
	}
	
	function relatorioAcompanhamentoPdf() {
		
		$periodo = $tipo = $os_id = $status = '';
		if ( !empty($this->data['Ordemservico']['ordemservico_id']) )  
			$os_id = '"Ordemservico"."id" = '.$this->data['Ordemservico']['ordemservico_id'].'';
		if ( !empty($this->data['Ordemservico']['datainicial']) && !empty($this->data['Ordemservico']['datafinal']) ) {
			$data1 = explode('/', $this->data['Ordemservico']['datainicial']);
			$datainicial = $data1[2].'-'.$data1[1].'-'.$data1[0].' 00:00:00';
			$data2 = explode('/', $this->data['Ordemservico']['datafinal']);
			$datafinal = $data2[2].'-'.$data2[1].'-'.$data2[0].' 23:59:59';
			$periodo = "to_date(\"Ordemservico\".\"entregadata\", 'DD/MM/YYYY') between '".$datainicial."' and '".$datafinal."'";
		}
		if ( !empty($this->data['Ordemservico']['garantia']) && empty($this->data['Ordemservico']['orcamento']) ) 
			$tipo = '"Ordemservico"."tipo" = \'G\'';
		if ( !empty($this->data['Ordemservico']['orcamento']) && empty($this->data['Ordemservico']['garantia']) )  
			$tipo = '"Ordemservico"."tipo" = \'O\'';
		
		if( !empty($this->data['Ordemservico']['status']) ) 
			$status = $this->data['Ordemservico']['status'];
		
		$this->Ordemservico->recursive = -1;
		//conditions será somente as OSs abertas
		$this->paginate = array('conditions' => array(/*'OrdemservicosStatus.status_id' => 13, */$tipo, $periodo, $os_id),
							  	'order' => array("to_date(\"Ordemservico\".\"entregadata\", 'DD/MM/YYYY')" => 'ASC')
							  );
		
	  	$ordemservicos = array();
		$OSs = $this->paginate();
		foreach ($OSs as $OS) {
			list($dia, $mes, $ano) = explode('/', date('d/m/Y', strtotime($OS['Ordemservico']['created'])));
			list($hora, $minuto, $segundo) = explode(':', date('H:i:s', strtotime($OS['Ordemservico']['created'])));
			$dataEntrada = mktime($hora, $minuto, $segundo, $mes, $dia, $ano);
			
			list($dia1, $mes1, $ano1) = explode('/', $OS['Ordemservico']['entregadata']);
			$dataEntrega = mktime(23, 59, 59, $mes1, $dia1, $ano1);
			
			list($dia2, $mes2, $ano2) = explode('/', date('d/m/Y'));
			list($hora2, $minuto2, $segundo2) = explode(':', date('H:i:s'));
			$tempoAtual = mktime($hora2, $minuto2, $segundo2, $mes2, $dia2, $ano2);
			
			$prazoTotal = $dataEntrega - $dataEntrada;
			$prazoRestante = $dataEntrega - $tempoAtual;
			
			if ( $prazoTotal < 0 )
				$prazoTotal = 1;
			$porcentagem = ($prazoRestante / $prazoTotal) * 100;
			if ($porcentagem > 15)
				$cor = 'green';
			elseif ($porcentagem < 15 && $porcentagem > 0)
				$cor = 'yellow';
			else
				$cor = 'red';
			
			if ( !empty($status) ) {
				if ( $status == $cor )
					$OS['cor'] = $cor;
				else
					unset($OS);
			} else
				$OS['cor'] = $cor;
			
			if (isset($OS)) {
				$OS['Ordemservico']['id'] = $this->Ordemservico->inserirZerosId($OS['Ordemservico']['id']);
				$ordemservicos[] = $OS;
			}
		}
		$this->set(compact('ordemservicos'));
		$this->layout = 'pdf';
			
	}
	
	function consultaExterna($msg = null) {
		$this->layout = 'inicial';
		if ( !empty($this->data) ) {
			$os_id = ''; 
			if ( $this->data['Ordemservico']['numero_os'] && $this->data['Ordemservico']['cpf'] ) {
				$os_id = $this->Ordemservico->field('id', array('Ordemservico.id' => $this->data['Ordemservico']['numero_os'])); 
				$msg = '';
				if( !empty($os_id) )
					$this->redirect(array('action' => 'infoOsCliente', $os_id, $msg));
				else 
					$msg = 'OS não existe. Favor tentar novamente.';
			} else 
				$msg = 'É preciso preencher os dois campos.';
		}
		$this->set(compact('msg'));
	}
	
	function infoOsCliente($os_id = null, $msg = null) {
		$this->layout = 'consulta';
		$this->set('posicao_aba', 0);
		$municipios = array();
		if ($os_id) {
			$this->Ordemservico->unbindModel(array('hasAndBelongsToMany' => array('Peca', 'Status', 'Servico'), 'hasMany' => array('Laudotecnico', 'Pagamento', 'Entrega')));
			$this->data = $this->Ordemservico->read(null, $os_id);
			$municipios = $this->Ordemservico->Pessoa->Municipio->find('list', array('conditions' => array('Municipio.id' => $this->data['Pessoa']['municipio_id']))); 
		}
		$this->set(compact('municipios', 'os_id', 'msg'));
	}
	
}
?>